/*********************************************************
 *
 * Filename: x.c
 *   Author: jmdvirus
 *   Create: 2018年12月05日 星期三 10时05分09秒
 *
 *********************************************************/

//
//
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/workqueue.h>

MODULE_LICENSE("GPL");

static struct workqueue_struct *queue = NULL;
static struct work_struct work;

static void work_handler(struct work_struct *data)
{
	printk(KERN_ALERT "work handler\n");
}
 
static int snaky_init(void) {
	printk(KERN_WARNING "Module init: Hello snaky!\n");
	queue = create_singlethread_workqueue("snaky queue");
	INIT_WORK(&work, work_handler);
	schedule_work(&work);
	return 0;
}
 
static void snaky_exit(void) {
	printk(KERN_WARNING "Module exit: bye-bye\n");
	destroy_workqueue(queue);
}
 
module_init(snaky_init);
module_exit(snaky_exit);

MODULE_DESCRIPTION("snaky operation");
MODULE_AUTHOR("jmdvirus");

